package api.controller;

import api.feign.UserService;
import com.lyx.common.param.*;
import com.lyx.common.vo.R;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * --- Be Humble and Hungry ---
 *
 * @author McMeloxD
 * @date 2024/8/13
 * @desc 用户接口
 */
@RestController
@RequestMapping("/api/user/")
@Tag(name = "用户接口")
public class UserApi {
    @Resource
    private UserService service;

    /**
     * 校验手机号
     */
    @GetMapping("checkphone")
    public R checkPhone(String phone){
        return service.checkPhone(phone);
    }

    /**
     * 发送验证码
     */
    @GetMapping("sendrcode")
    public R sendRcode(String phone){
        return service.sendRcode(phone);
    }

    /**
     * 校验验证码
     */
    @PostMapping("checkrcode")
    public R checkRcode(@RequestBody PhoneCode code){
        // 用requestbody将数据转为类对象
        return service.checkRcode(code);
    }

    /**
     * 用户注册
     */
    @PostMapping("register")
    public R register(@RequestBody UserAdd userAdd){
        return service.register(userAdd);
    }

    /**
     * 用户登录
     */
    @PostMapping("login")
    public R login(@RequestBody UserLogin login){
        return service.login(login);
    }

    /**
     * 用户退出
     */
    @GetMapping("logout")
    public R logout(){
        return service.logout();
    }


    /**
     * 查询全部用户
     */
    @GetMapping("all")
    public R All(){
        return service.queryAll();
    }

    /**
     * 找回发验证码*/
    @GetMapping("findPswSendRcode")
    R findPswSendRcode(String phone){
        return service.findPswSendRcode(phone);
    }

    /**
     * 修改密码*/
    @PostMapping("findPassword")
    R findPassword(UserFindPwd user){
        return service.findPassword(user);
    }

    /**
     * 修改用户信息
     */
    @PostMapping("updateinfo")
    R updateInfo(@RequestBody UserUpdateInfo up){
        return service.updateInfo(up);
    }

    /**
     * 修改用户密码
     */
    @PostMapping("updatepassword")
    R updatePassword(@RequestBody UserUpdatePsw uup){
        return service.updatePassword(uup);
    }

    /**
     * 签到
     */
    @GetMapping("signin")
    R signIn(Integer uid){
        return service.signIn(uid);
    }
}
